package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;

/**
 * java将IO按照读写单位划分为字节流与字符流
 * java.io.InputStream和OutputStream是所有字节流的超类，读写单位以byte为单位
 * java.io.Reader和Writer是所有字符流的超类，读写单位以char为单位
 * 字符流都是高级流(处理流),并且字符流在流连接中只能连接在其他字符流上。
 * 但是由于低级流都是字节流，因此他们之间是无法直接连接的，所以需要一个"转换器"
 * 这个转换器就是转换流:java.io.InputStreamReader和OutputStreamWriter
 * 转换流是一对字符流，它们是唯一可以连接在字节流上的字符流，在流连接中的作用:
 * 1:衔接字符流与字节流
 * 2:读写过程中负责将字符与字节相互转换
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        //使用转换流测试字符流如何写出文本数据
        FileOutputStream fos = new FileOutputStream("osw.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);

//        String line = "我祈祷拥有一颗透明的心灵，和会流泪的眼睛。";
//        byte[] data = line.getBytes(StandardCharsets.UTF_8);
//        fos.write(data);
//
//        line = "给我再去相信的勇气，哦越过谎言去拥抱你~";
//        data = line.getBytes(StandardCharsets.UTF_8);
//        fos.write(data);

        osw.write("我祈祷拥有一颗透明的心灵，和会流泪的眼睛。");
        osw.write("给我再去相信的勇气，哦越过谎言去拥抱你~");

        System.out.println("写出完毕");
//        fos.close();
        osw.close();
    }
}
